#pragma once
/*
PROJECT_NAME PLauncher
PRODUCT_NAME CLion
NAME ExtraFileManager
AUTHOR Pfolg
TIME 2025/10/1 13:14
*/

#include <QObject>
#include <QString>
#include <QDir>
#include <QMap>
#include <QVector>
#include "CubismFramework.hpp"

class ExtraFileManager : public QObject {
    Q_OBJECT

public:
    explicit ExtraFileManager(QObject *parent = nullptr);

    ~ExtraFileManager();

    // 扫描并加载额外文件
    void loadExtraFiles(const QString &modelDir);

    // 获取可用的额外表情列表
    QVector<QString> getAvailableExpressions() const;

    // 获取可用的额外动作列表
    QVector<QString> getAvailableMotions() const;

    // 获取表情文件数据
    QByteArray getExpressionData(const QString &expressionName) const;

    // 获取动作文件数据
    QByteArray getMotionData(const QString &motionName) const;

private:
    // 递归扫描目录
    void scanDirectory(const QDir &dir);

    // 加载表情文件
    void loadExpressionFile(const QString &filePath);

    // 加载动作文件
    void loadMotionFile(const QString &filePath);

private:
    QMap<QString, QByteArray> _extraExpressions; // 额外表情文件数据
    QMap<QString, QByteArray> _extraMotions; // 额外动作文件数据
    QString _modelHomeDir;
};

